import sys
from os import path
import math
FILE = False
if FILE:
sys.stdin = open('input.txt', 'r')
sys.stdout = open('output.txt', 'w')
def get_int():
return int(sys.stdin.readline())
def get_string():
return sys.stdin.readline().strip()
def find_height(a,b,c):
if 1+a!=c:
return -1
a_length = a.bit_length()
if a_length == 0:
return b+c-1
openings = (((1 << a_length) - 1) ^ a)
remaining_ones = max(0,b-openings)
add_routes = ((1 << a_length-1) - openings) * 2 + openings
new_height = math.ceil( remaining_ones / add_routes ) if remaining_ones!=0 else 0
height_2 = (a_length-1)
min_height = height_2 + new_height + 1
return min_height
t = get_int()
final_result = []
for i in range(t):
numbers = get_string()
a,b,c = list(map(int,numbers.split()))
ans = find_height(a,b,c)
final_result.append(str(ans))
for item in final_result:
sys.stdout.write(item)
sys.stdout.write('\n')
74. Search a 2D Matrix | 71. Simplify Path |
62. Unique Paths | 50. Pow(x, n) |
43. Multiply Strings | 34. Find First and Last Position of Element in Sorted Array |
33. Search in Rotated Sorted Array | 17. Letter Combinations of a Phone Number |
5. Longest Palindromic Substring | 3. Longest Substring Without Repeating Characters |
1312. Minimum Insertion Steps to Make a String Palindrome | 1092. Shortest Common Supersequence |
1044. Longest Duplicate Substring | 1032. Stream of Characters |
987. Vertical Order Traversal of a Binary Tree | 952. Largest Component Size by Common Factor |
212. Word Search II | 174. Dungeon Game |
127. Word Ladder | 123. Best Time to Buy and Sell Stock III |
85. Maximal Rectangle | 84. Largest Rectangle in Histogram |
60. Permutation Sequence | 42. Trapping Rain Water |
32. Longest Valid Parentheses | Cutting a material |
Bubble Sort | Number of triangles |
AND path in a binary tree | Factorial equations |